#ifndef MIX_HH_
# define MIX_HH_

# include "cv.h"
# include "highgui.h"
# include "tbb/blocked_range2d.h"
# include "tbb/parallel_for.h"

class ApplyMean {
  IplImage* input1;
  IplImage* input2;
  IplImage* output;
public:
  ApplyMean (IplImage* input1_,
	     IplImage* input2_);

  void operator() (const tbb::blocked_range2d<int>& r) const;

  IplImage* getOutput ();
};

class ApplyDiffAbs {
  IplImage* input1;
  IplImage* input2;
  IplImage* output;
public:
  ApplyDiffAbs (IplImage* input1_,
		IplImage* input2_);

  void operator() (const tbb::blocked_range2d<int>& r) const;

  IplImage* getOutput ();
};

IplImage*
mix (IplImage* input1,
     IplImage* input2,
     const char* op);

#endif /* !INVERT_HH_ */
